const puppeteer = require('puppeteer')

const base = 'https://movie.douban.com/subject/'
const doubanId='26739551'
const videoBase='https://movie.douban.com/trailer/219491'

const sleep = time => new Promise(resolve => {
        setTimeout(resolve, time)
    })

;(async () => {  //必须前面有;冒号
    const browser = await puppeteer.launch({

        args: ['--no-sandbox'],
        dumpio: false,
        headless: false
    })

    const page = await browser.newPage()
    await page.goto(base+doubanId, {
        waitUntil: 'networkidle2'
    })
    await sleep(1000)

    const result = await page.evaluate(() => {
        var $ = window.$;   //puppeteer可以拿到window.$对象转为jQuery对象，方便使用
        var it=$('.related-pic-video')
        console.log(it.length)
        //爬取网页时要多做判断，容易捕捉到空，或者里面没有要的资源
        if(it && it.length>0){
            var link=it.attr('href') //it是div 但是它包含里面的a的href也能资源直接找
            var cover = it.css("background-image")
            cover=(cover.split('url("'))[1].replace('?")','')
                console.dir(cover)
            return{link,cover}  //将我们要的元素的link影片地址和cover返回出去
        }
        return{}   //如首页没it或it没放影片数据就返空对象，让结构传空值

    })
    let video;
    if (result.link) {  //如果上面返回结果有link就证明有想要的影片资源，继续..
        await page.goto(result.link, {  //去link详情页获取预告片
            waitUntil: 'networkidle2'
        })
        await sleep(1000)

        video = await page.evaluate(() => {
            var $ = window.$
            var it = $('source')

            if (it && it.length > 0) {  //如果捕捉到对象，且里面有资源
                return it.attr('src')  //获取预告片视频地址
            }
            return ''  //没有预告片资源返回空
        })
    }
    const data = {  //将需要的资源放data 下面传送
        video,
        doubanId,
        cover: result.cover
    }
    console.log(data)
    browser.close()
    process.send({data})  //这个js文件挂载到子进程运行，这是给子进程输出结果数据
    process.exit(0)   //这个js模块挂载到子进程运行，这个是退出子进程
})()